import "dart:io";

// main(List<String> args) {
//   print("main start");
//   // 发送一个网络请求
//   var future = getNetworkData();
//   print(future);
//   // 2.拿到结果
//   future.then((dynamic value) {
//     print(value);
//   });
//   print("main end");
// }

// // 模拟一个网络请求
// Future getNetworkData() {
//   return Future(() {
//     // 1.将耗时操作包裹到future中
//     //
//     sleep(Duration(seconds: 5));
//     return "hello world";
//   });
// }

main(List<String> args) {
  print("main start");
  // 发送一个网络请求
  var future = getNetworkData();
  print(future);
  // 2.拿到结果 不指定类型写dynamic
  // then后面的回调函数什么时候执行？
  // 需要在future（函数）有结果，才执行下面的回调函数
  future.then((String value) {
    print(value);
  }).catchError((err) {
    print("$err");
  }).whenComplete(() {
    print("代码执行完成");
  });
  print("main end");
}

// 模拟一个网络请求
Future<String> getNetworkData() {
  return Future<String>(() {
    // 1.将耗时操作包裹到future中
    // 只要有返回结果，那么就执行future对应的then的回调
    // 如果没有结果返回（有错误信息），需要在future回调中抛出一个异常
    sleep(Duration(seconds: 1));
    // return "hello world";
    throw Exception("我是错误信息");
  });
}
